/***************************************************************************************************
*  File Name   : DataStructFramework_Var.h                                                         *
*  Version No  : Ver 005                                                                          *
*  Description : This Header File created for defining Gloabl Variables for Data Struct Framework  *
*  Author      : Tianyufang                                                                        *
*  Copyright   : Copyright (c) Tianyufang(personal).All Rights Reserved                            *
*  Creat Date  : 2012/09/23                                                                        *
*  Modify Date : 2012/01/09                                                                        *
*==================================================================================================*
*  No  Name        Date        Modify Content                                                      *
*  1   Tianyufang  2012/09/23  New                                                                 *
*  2   Tianyufang  2012/11/05  Add wuwDSFLinkedListNo                                              *
*                              Change Globle Variable to                                           *
*  3   Tianyufang  2012/11/08  Add DSF_LINKED_LIST_TYPE_MAX                                        *
*                                  DSF_LINKED_LIST_TYPE_SINGLE                                     *
*                                  DSF_LINKED_LIST_TYPE_DOUBLE                                     *
*                                  DSF_LINKED_LIST_TYPE_RING                                       *
*                              Change wuwDSFLinkedListNo to array                                  *
*  4   Tianyufang  2012/11/10  Rename pstDSFRootNode -> pstDSFSglRootNode                          *
*                                     pstDSFLastNode -> pstDSFSglLastNode                          *
*                                   wuiDSFNodeNo -> [DSF_LINKED_LIST_TYPE_MAX][DSF_LINKED_LIST_MAX]*
*                     wuiDSFNodeNum -> wuiDSFNodeNum[DSF_LINKED_LIST_TYPE_MAX][DSF_LINKED_LIST_MAX]*
*                                wuwDSFLinkedListNo -> wuwDSFLinkedListNo[DSF_LINKED_LIST_TYPE_MAX]*
*  5   Tianyufang  2013/01/09  Add pstDSFDblRootNode                                               *
*                                  pstDSFDblLastNode                                               *
*                                                                                                  *
*==================================================================================================*/
#ifndef _DATASTRUCTFRAMEWORK_VAR_H_
#define _DATASTRUCTFRAMEWORK_VAR_H_
/*=================================================================================================*
*                                          Include Files                                           *
**=================================================================================================*/

/*=================================================================================================*
*                                          Section Define                                          *
**=================================================================================================*/

/*=================================================================================================*
*                                          Macro Define                                            *
**=================================================================================================*/
typedef enum
{
#ifdef SINGLY_LINKED_LIST
	DSF_LINKED_LIST_TYPE_SINGLE = 0,			/* Index of Single Linked List */
#endif
#ifdef DOUBLY_LINKED_LIST
	DSF_LINKED_LIST_TYPE_DOUBLE,				/* Index of Double Linked List */
#endif
#ifdef RING_LINKED_LIST
	DSF_LINKED_LIST_TYPE_RING,					/* Index of Ring Linked List */
#endif
	DSF_LINKED_LIST_TYPE_MAX					/* quantity of different Linked List */
}DSFLinkedListType;

#define DSF_LINKED_LIST_MAX	(1)					/* Quantity of One Linked List that user  */
/*=================================================================================================*
*                                           Type Define                                            *
**=================================================================================================*/
#ifdef SINGLY_LINKED_LIST
typedef struct wstSglLinkedList
{
	uInt	uiListNo;
	void	*vpDataContainer;
	struct	wstSglLinkedList *pstNext;
}wstSglLinkedList;
#endif
#ifdef DOUBLY_LINKED_LIST
typedef struct wstDblLinkedList
{
	uInt	uiListNo;
	void	*vpDataContainer;
	struct	wstDblLinkedList *pstHead;
	struct	wstDblLinkedList *pstTail;
}wstDblLinkedList;
#endif
#ifdef RING_LINKED_LIST
#endif
/*=================================================================================================*
*                                          Struct Define                                           *
**=================================================================================================*/

/*=================================================================================================*
*                                          Globle Variable                                         *
**=================================================================================================*/
#ifdef SINGLY_LINKED_LIST
extern wstSglLinkedList *pstDSFSglRootNode[DSF_LINKED_LIST_MAX];				/* Root Node	*/
extern wstSglLinkedList *pstDSFSglLastNode[DSF_LINKED_LIST_MAX];				/* Last Node	*/
#endif
#ifdef DOUBLY_LINKED_LIST
extern wstDblLinkedList *pstDSFDblRootNode[DSF_LINKED_LIST_MAX];				/* Root Node */
extern wstDblLinkedList *pstDSFDblLastNode[DSF_LINKED_LIST_MAX];				/* Last Node */
#endif
#ifdef RING_LINKED_LIST
#endif

extern uInt wuiDSFNodeNo[DSF_LINKED_LIST_TYPE_MAX][DSF_LINKED_LIST_MAX];		/* Node No */
extern uInt wuiDSFNodeNum[DSF_LINKED_LIST_TYPE_MAX][DSF_LINKED_LIST_MAX];		/* Node Total Number */
extern uWord wuwDSFLinkedListNo[DSF_LINKED_LIST_TYPE_MAX];						/* One Linked List No */

/*=================================================================================================*
*                                          Function Declaration                                    *
**=================================================================================================*/

#endif

